Piattaforma di Gestione Rete RA Italia
Sistema Integrato per Analisi di Fattibilità, Rilascio e Gestione Collegamenti sulla Rete AGGREGATION TelecomItalia
Funzionalità Principali
Suite completa di strumenti enterprise per ottimizzazione Rete DWDM.
Algoritmo Dijkstra Avanzato
Core EngineCalcolo automatico fino a 300 percorsi primari (Std) (default 30) ottimizzati per distanza e 10 alternativi diversificati (Div) per ciascuno. Vincoli configurabili: centrali obbligatorie (selezione multipla), centrali da evitare (multipla), distanza min/max km, numero collegamenti, solo ATTIVI.
Database Enterprise RC_Italia
ProfessionalRepository 500+ centrali con metadati completi (GAT, CLLI, coordinate WGS84, zona, area, regione, stato operativo). Ricerca full-text case-insensitive. Toggle "Solo collegamenti NON ATTIVI" per analisi mirate. Selezione multipla, personalizzazione colonne, export CSV customizzabile.
Geocodifica OpenStreetMap
Smart LocationConversione automatica indirizzo → coordinate WGS84 tramite OpenStreetMap Nominatim API. Algoritmo Haversine per calcolo distanze ortodromiche. Identificazione automatica centrale più vicina con indicatore permanente distanza. Supporto indirizzi italiani completi.
Mappa Visualizzazione Percorsi
Path ViewerMappa Leaflet.js dedicata alla visualizzazione dei percorsi calcolati nella Ricerca Percorsi. Overlay colorati differenziati per percorsi primari (Std) e diversificati (Div), layer control avanzato, zoom automatico sul percorso selezionato. Contesto RA/RC: la mappa si resetta automaticamente quando passi da "Ricerca Percorsi RA" a "Ricerca Percorsi RC" (e viceversa), evitando refusi di ricerche precedenti. Le funzionalità complete di analisi topografica (filtri, marker, ricerca indirizzo, COLT vicine) sono disponibili nel tool NAT Italia.
Calcolatore Attenuazione Fibra
ProfessionalStima professionale perdite su tratte fibra ottica. Layout a 2 colonne: form input + risultato stile Riepilogo Economico a sinistra, legenda con tabella coefficienti a destra. Supporta MM (850/1300 nm) e SM (1310/1550 nm). Coefficienti standard ITU-T G.652/G.651.
Sistema Undo Intelligente
Time-saverCronologia automatica ultime 20 ricerche con salvataggio completo: centrali, vincoli, filtri, coordinate cliente, toggle stati. Ripristino istantaneo con 1 click. Persistenza localStorage tra sessioni. History stack FIFO. Risparmio: da 5 minuti a 5 secondi!
Export Multi-formato
Enterprise OutputExport percorsi formato TXT professionale (Std e Div separati), CSV database con colonne customizzabili, bottone copia formattata per clipboard immediato. Visualizzazione percorsi su mappa integrata con overlay colorati. Output formattato pronto per CR/GI/documentazione tecnica. Supporto uniforme per RC e RA: export TXT disponibile per Percorsi Std e Percorsi Std + Div (RA) con formato allineato alla sezione RC.
Documentazione Unificata
Complete GuideDocumentazione Tecnica + Guida Operativa in tab unico con 2 sezioni separate. Include: introduzione, 6 funzionalità dettagliate con details espandibili, workflow 11 passi, caso d'uso reale ROMA-MILANO, tips professionali, FAQ troubleshooting. Navigazione rapida con indice cliccabile.
RA Italia — Rete Aggregation
Network AggregationDistribuzione regionale e collegamenti di accesso Urban Regional e Dense Urban. Collega le Centrali COLT ai nodi della rete Core, gestendo il traffico dalla Rete di Accesso verso i POP. Include percorsi Revolution per aggregazione traffico cliente.
RC Italia — Rete Core
Network CoreBackbone nazionale DWDM e collegamenti metropolitani Ultra Dense Urban e Dense Urban. Rete ad alta capacità per il trasporto dati a lunga distanza tra i principali nodi nazionali (NODI A1). Gestisce traffico inter-regionale e connessioni verso i POP principali.
Verifica Mista RA+RC
Combined AnalysisAnalisi combinata delle infrastrutture RC Italia, RA Italia e Fibra Nuda Diretta per identificare il miglior percorso logico disponibile. Permette di valutare soluzioni ibride che attraversano più reti per ottimizzare costi, distanze e ridondanza.
Fibra Nuda Diretta
In StudioCollegamenti punto-punto dedicati in fibra ottica dark fiber. Sezione attualmente in fase di studio ed eventuale implementazione. Permetterà l'analisi di percorsi su infrastruttura fibra nuda per servizi dedicati ad alta capacità senza apparati attivi intermedi.
Filtro POP (NODO A1)
32 CentraliToggle per filtrare le 32 centrali POP nazionali (NODO A1) come destinazione percorsi. I POP sono i punti di interconnessione regionali della rete TIM: ROMA, MILANO, TORINO, NAPOLI, BOLOGNA, FIRENZE, ecc. Attivando il filtro, il campo arrivo mostra solo le centrali POP ufficiali.
Colorazione ID Collegamenti RA
Visual CodeSistema di colorazione semantica per gli ID collegamenti RA: Verde (T1↔T2, T2↔T2) collegamenti principali, Blu TIM (T2↔T3) collegamenti intermedi, Standard (T3↔T3) collegamenti di transito. Il conteggio calcola: verdi=1, blu=0.5 (ogni 2=1).
Novità V11.2 (Fix26)
UpdateMiglioramenti mirati su usabilità e coerenza RA/RC: reset automatico della mappa su cambio tab RA↔RC, export TXT RA (Std e Std+Div) allineato al formato RC, aggiornamenti Documentazione/Changelog e stabilità in modalità NODB.
Ricerca Percorsi RC
Impostazione Ricerca Percorsi Standard e Percorsi Diversificati sulla Rete RC Italia
Imposta i parametri di ricerca per ottenere fino a 30 Percorsi Standard (Std) come default
e, per ciascuno di essi, fino a 10 Percorsi Diversificati (Div).
I percorsi saranno calcolati sulla base del DB RC Italia, tenendo conto di Stati, Distanze e Vincoli.
Note su Ricerca Percorsi RC:
📍 Posizione Cliente: inserisci l'indirizzo completo oppure le coordinate (Lat/Lon). Clicca "🔍 Geocodifica Indirizzo" per convertire automaticamente l'indirizzo in coordinate geografiche.
🔎 Trova Centrale Vicina: il sistema calcolerà la centrale più vicina alla posizione del cliente utilizzando l'algoritmo di Haversine e la inserirà automaticamente come una "🚀 Centrale di Partenza (Percorso Std)".
🥇 Percorso Std: utilizza Partenza 1 / Arrivo 1 e restituisce fino a 30 soluzioni ordinate per distanza crescente. Questi sono i percorsi standard primari.
🥈 Percorsi Div: percorsi diversificati che utilizzano Partenza 2 / Arrivo 2 se specificati, oppure gli stessi nodi di Std se i campi 2 sono vuoti. Servono per garantire ridondanza e percorsi alternativi.
✅ Centrale Obbligatoria: il percorso dovrà necessariamente transitare attraverso questa centrale. Utilizza il bottone "➕ Sel. Multipla" per forzare il passaggio su più centrali simultaneamente.
🚫 Centrale da Evitare: la centrale specificata verrà completamente esclusa dal grafo di ricerca. Nessun percorso potrà utilizzarla. Anche qui puoi usare "➕ Sel. Multipla" per escludere più centrali.
🟢 Solo tratte attive: se abilitato, il sistema considererà esclusivamente le tratte con stato "Attiva", ignorando quelle "In costruzione" o "Progettata".
⚙️ Filtri avanzati: limita i risultati per numero di link (hop), distanza in km o numero massimo di percorsi da visualizzare per ottimizzare la ricerca.
↩️ Undo (Ultime 20): ripristina rapidamente una delle ultime 20 ricerche effettuate. Il sistema salva automaticamente tutti i parametri di ogni ricerca (posizione cliente, centrali, filtri, selezioni multiple) permettendoti di tornare rapidamente a una configurazione precedente con un semplice click. Il/i bottoni "🔁 Reset Campi" non cancellano la 📋 Cronologia Ricerche.
💡 In Sviluppo: a breve ci sarà l'implementazione di un processo automatizzato che, dato un indirizzo cliente, calcolerà il percorso ottimale dalla Centrale RC più vicina al NODO A1 ad essa connesso, tramite geolocalizzazione.
| # | Percorso Centrali | ID Collegamenti | Collegamenti | Distanza (km) | Azioni |
|---|---|---|---|---|---|
| Nessun percorso calcolato. Imposta i parametri e premi Calcola Percorsi Std. | |||||
Percorsi Div (diversificati) per il percorso selezionato
| # | Percorso Centrali | ID Collegamenti | Collegamenti | Distanza (km) | Azioni |
|---|---|---|---|---|---|
| Seleziona un percorso Std e lancia Percorsi Div per vedere le alternative diversificate. | |||||
Ricerca Percorsi RA
Impostazione Ricerca Percorsi Standard e Percorsi Diversificati sulla Rete RA Italia
Imposta i parametri di ricerca per ottenere fino a 30 Percorsi Standard (Std) come default
e, per ciascuno di essi, fino a 10 Percorsi Diversificati (Div).
I percorsi saranno calcolati sulla base del DB RA Italia, tenendo conto di Stati, Distanze e Vincoli.
Note su Ricerca Percorsi RA:
📍 Posizione Cliente: inserisci l'indirizzo completo oppure le coordinate (Lat/Lon). Clicca "🔍 Geocodifica Indirizzo" per convertire automaticamente l'indirizzo in coordinate geografiche.
🔎 Trova Centrale Vicina: il sistema calcolerà la centrale RA più vicina (Tipo 1 o Tipo 2) alla posizione del cliente utilizzando l'algoritmo di Haversine e la inserirà automaticamente come "🚀 Centrale di Partenza (Percorso Std)".
🥇 Percorso Std: utilizza Partenza 1 → Arrivo 1 e restituisce il percorso ottimale ordinato per distanza. La centrale di partenza deve essere Tipo 1 o Tipo 2 per garantire il collegamento alla rete.
🥈 Percorsi Div: percorso diversificato verso un'altra centrale Tipo 1 (NODO A1) sullo stesso arco. Disponibile solo quando la centrale di arrivo è Tipo 1. Garantisce ridondanza per disaster recovery.
🏢 Tipi Sede: Tipo 1 = HUB RA+RC (NODO A1, interconnesso con Rete Core) • Tipo 2 = HUB RA (centrale hub che aggrega traffico verso Tipo 1) • Tipo 3 = Passaggio (transito, non visualizzato nei percorsi ma attraversato dai collegamenti).
🎨 Colorazione ID Collegamenti: Verde = T1↔T2 o T2↔T2 (collegamenti principali, conta 1) • Blu TIM = T2↔T3 (collegamenti intermedi, conta 0.5) • Grigio = T3↔T3 (passaggio, non conta nel totale).
🔵 Filtro POP (NODO A1): il bottone [POP] filtra solo le 32 centrali POP nazionali come destinazione. Queste sono le centrali di interconnessione regionale con la rete Core RC Italia.
📍 Archi Multipli: se una centrale appartiene a più archi, appare il bottone [Premi Qui] per visualizzare la lista completa. I filtri Arco e TipoSede aggiornano dinamicamente le centrali disponibili negli autocomplete.
⚠️ Selezione Arco Obbligatoria: quando le centrali di Partenza e Arrivo appartengono a più archi compatibili, il sistema mostra il messaggio "⚠️ Più archi compatibili: seleziona 1 arco nella sezione Filtro per Arco per calcolare". In questo caso, prima di calcolare il percorso, è necessario selezionare un singolo arco dal filtro "🔍 Filtro per Arco (Checkbox)" per disambiguare il percorso desiderato.
🔀 Multi-Arco: funzionalità avanzata che calcola tutti i percorsi Std su tutti gli archi compatibili tra Partenza e Arrivo. Utile quando le centrali appartengono a più archi e si vogliono confrontare tutte le opzioni. La tabella risultati mostra l'arco di appartenenza per ogni percorso, con bottoni dedicati per visualizzare i Percorsi Div e la mappa per ciascun arco. Export TXT e Mappa Multi-Arco disponibili.
↩️ Undo (Ultime 20): ripristina rapidamente una delle ultime 20 ricerche effettuate. Il sistema salva automaticamente tutti i parametri (posizione cliente, centrali, filtri) permettendoti di tornare a una configurazione precedente. Il bottone "🔁 Reset Campi" non cancella la 📋 Cronologia Ricerche.
🔑 La costruzione dell'identificativo univoco di collegamento (IdCollegamento) è così strutturata:
NE_arco_1042 | NE_144 | ANE009 | 5 | [1]
NE_arco_1042 → identificativo dell'Arco di rete
NE_144 → identificativo del ramo (IdRamo)
ANE009 → identificativo del sub-path
5 → indica il progressivo dell'IdRamo all'interno dell'arco di appartenenza
[1] → è un ID limitato a pochi IdCollegamenti, incluso a scopo differenziativo
L'insieme di questi 4 elementi definisce in modo univoco il path nel modello RA.
| # | Percorso Centrali | ID Collegamenti | Collegamenti | Distanza (km) | Azioni |
|---|---|---|---|---|---|
| Nessun percorso calcolato. Imposta i parametri e premi Calcola Percorsi RA. | |||||
Percorsi Div (diversificati) per il percorso selezionato
| # | Percorso Centrali | ID Collegamenti | Collegamenti | Distanza (km) | Azioni |
|---|---|---|---|---|---|
| Seleziona un percorso Std e lancia Percorsi Div per vedere le alternative diversificate. | |||||
🔀 Multi-Arco: Percorsi su tutti gli archi compatibili
| # | 🔗 Arco | Percorso Centrali | ID Collegamenti | Collegamenti | Distanza (km) | Azioni |
|---|---|---|---|---|---|---|
| Premi 🔀 Multi-Arco per calcolare i percorsi su tutti gli archi compatibili. | ||||||
📍 Percorso Div per Arco selezionato
| # | 🔗 Arco | Percorso Centrali | ID Collegamenti | Collegamenti | Distanza (km) |
|---|---|---|---|---|---|
| Seleziona un percorso e premi ▶ Percorso Div per vedere il diversificato. | |||||
Visualizzazione DB RC Italia
Consulta, filtra ed esporta i collegamenti DWDM e fibra nuda presenti nel database RC Italia.
Collegamenti NON ATTIVI - RA Italia
⚠️ Funzionalità non disponibile per Database RA Italia
Funzionalità Non Disponibile
La sezione "Collegamenti NON ATTIVI" non è attualmente disponibile per il database RA Italia.
🗺️ Mappa Topografica dei Percorsi
Visualizza su mappa i percorsi Std / Div dell'ultima ricerca eseguita.
Percorsi trovati (0)
Usa le checkbox per mostrare o nascondere i singoli percorsi sulla mappa.
Mappa Topografica Nazionale
Visualizzazione geografica completa della rete RC_Italia con filtri interattivi per Area, Zona e Stato
Calcolatore Attenuazione Fibra (dB)
Stima la perdita complessiva su una tratta in fibra ottica in funzione della lunghezza, del tipo di fibra e del numero di Collegamenti.
📊 Risultato Calcolo Attenuazione
| Tipo fibra | - |
|---|---|
| Lunghezza tratta | - |
| N° Collegamenti (Connettorizzazioni) | - |
| 📉 Perdita fibra (L × α) | - |
| 🔗 Perdita connettori (N × 0.3) | - |
| ⚡ PERDITA TOTALE STIMATA | - |
📚 Legenda e Metodologia di Calcolo:
📐 Formula ITU-T: La perdita totale è calcolata con:
Perdita (dB) = (L × α) + (N_conn × 0.3)📏 Parametri: L = lunghezza in km, α = coefficiente attenuazione intrinseca (dB/km), N_conn = numero connettorizzazioni (2 per ogni bretella).
🌈 Coefficienti di Attenuazione (α):
| λ (nm) | Tipo | α (dB/km) | Uso tipico |
|---|---|---|---|
| ● 850 | MM | 3.00 | Data center, LAN |
| ● 1300 | MM | 1.00 | Campus network |
| ● 1310 | SM | 0.35 | Metro, regionale |
| ● 1550 | SM | 0.22 | Long-haul, DWDM |
🔗 Connettorizzazioni: Ogni bretella ha 2 connettori. Con X bretelle → 2X connettorizzazioni → perdita = 2X × 0.3 dB.
📋 Standard: Valori basati su ITU-T G.652 (SM) e G.651 (MM). Perdita connettore tipica: 0.3 dB (fusione) - 0.5 dB (meccanico).
💡 Esempio: 35 km a 1550 nm, 3 bretelle (6 conn.)
Fibra: 35 × 0.22 = 7.70 dB
Connettori: 6 × 0.3 = 1.80 dB
Totale = 9.50 dB
Analisi Costi per Fattibilità
Stima dei Costi associati a Link, Code Cliente e Apparati/Cestelli, con Selezione Multipla e Riepilogo Economico.
📊 Riepilogo Economico
Totali Calcolati in tempo reale sulla base di tutte le righe selezionate nei tre pannelli.
| Totale Listino Link RA & RC | 0,00 € |
|---|---|
| Totale Coda Cliente & Servizio | 0,00 € |
| Totale Apparati & Cestelli | 0,00 € |
| Totale Complessivo Stimato (Prezzo Cliente) | 0,00 € |
| Totale Complessivo con eventuale Sconto** | 0,00 € |
👤 Coda Cliente & Servizio
Componenti Economiche legate al tipo di Servizio Richiesto e alle Risorse Cliente.
| Tipologia | HW ADVA | Costo |
|---|
| CODA RETAIL | HW ADVA | Costo |
|---|
🔗 Link Rete RA & RC
Seleziona le Tipologie di Link Richieste dal Cliente. I Costi Includono Nuova Connessione e Scorta.
| Link | HW HUAWEI | Costo | |
|---|---|---|---|
| Caricamento… | |||
| Link | HW HUAWEI | Costo | |
|---|---|---|---|
| Caricamento… | |||
| Link | HW HUAWEI | Costo | |
|---|---|---|---|
| Caricamento… | |||
| Descrizione | Costo | |
|---|---|---|
| Caricamento… | ||
📲 Apparati & Cestelli
Costi una Tantum legati a Installazione Apparati, Schede e Cestelli Necessari al Servizio.
| Dettaglio | Note | Costo | |
|---|---|---|---|
| Caricamento… | |||
| Dettaglio | Note | Costo | |
|---|---|---|---|
| Caricamento… | |||
| Dettaglio | Note | Costo | |
|---|---|---|---|
| Caricamento… | |||
📚 Documentazione & Guida Tecnica CRO
Sistema Enterprise Unificato per Analisi, Progettazione e Gestione della rete DWDM e Fibra Ottica sulle reti RC Italia (Core) e RA Italia (Aggregation).
🎯 Introduzione al Sistema CRO
Central Routing Optimizer - Piattaforma Enterprise Unificata per Analisi e Gestione Rete RA e RC Italia
Panoramica del Sistema
CRO (Central Routing Optimizer) è una piattaforma enterprise sviluppata per l'analisi di fattibilità, il rilascio e la gestione dei collegamenti DWDM (Dense Wavelength Division Multiplexing) e fibra ottica su due reti Telecom Italia: RC Italia (Rete Core) e RA Italia (Rete di Aggregazione).
Il sistema integra un motore di calcolo percorsi avanzato basato su algoritmo Dijkstra modificato, database separati per RC e RA con migliaia di collegamenti, e visualizzazioni geografiche interattive su mappe topografiche OpenStreetMap.
- 🔀 Multi-Arco: calcola percorsi Std su tutti gli archi compatibili.
- Tabella Multi-Arco: ordinamento automatico per distanza crescente.
- ▶ Percorso Div: calcolabile per ogni arco con bottone dedicato.
- 🗺️ Mappa Topografica: visualizza tutti i percorsi Multi-Arco.
- 📄 Export TXT: esporta con indicazione arco e Div calcolati.
- Reset Tab: chiude automaticamente la sezione Multi-Arco.
Le 32 centrali NODO A1 sono i punti di interconnessione regionali della rete TIM:
Ambito di Applicazione
CRO è progettato per supportare:
- Richieste di Fattibilità Tecnica - Verifica rapida della realizzabilità di nuovi collegamenti su entrambe le reti
- Riconfigurazioni di Rete - Analisi impatto e percorsi alternativi per modifiche topologiche
- Verifiche di Percorso - Controllo tracciati esistenti e conformità progettuale
- Analisi Manutentive - Studio collegamenti NON ATTIVI e possibili ripristini
- Scenari Alternativi - Simulazioni what-if per disaster recovery e resilienza
- Ottimizzazione Routing - Identificazione percorsi più efficienti per riduzione latenza/costi
- Capacity Planning - Supporto decisionale per investimenti infrastrutturali
🔄 Processo di Fattibilità — Workflow Operativo
Il processo di fattibilità per servizi di connettività TIM si articola in due macro-scenari principali, che coinvolgono diverse componenti dell'infrastruttura di rete. L'analisi richiede l'utilizzo coordinato dei tool NAT (National Topography) e CRO (Central Routing Optimizer).
Il cliente (Retail o Wholesale) richiede un servizio internet con capacità di banda (es. 1G, 2G, 10G, 100G).
Flusso operativo:
- Si parte dalla posizione del cliente
- Si identifica la Centrale COLT più vicina (informazione fornita dalla S.d.F.)
- Rete di Accesso: Dal cliente alla Centrale COLT
- Se Retail → gestita da TIM
- Se Wholesale → gestita da FiberCop
- Rete di Trasporto: Dalla Centrale COLT al NODO A1 più vicino, attraversando la rete con il percorso più breve e conveniente
RETE DI ACCESSO: Cliente → Drop Cliente → Cavo di Accesso di Distribuzione → (Sede di Bypass — solo se unica opzione)
RETE DI TRASPORTO: Cavo di Giunzione/Bretella Ottica → Sede COLT (Urban Regional / Dense Urban / Ultra Dense Urban) → Rete Revolution (RA/RC) → POP
RETE DI ACCESSO: Cliente → Drop Cliente → Cavo di Bypass → Sede COLT
RETE DI TRASPORTO: Rete Revolution (RA/RC) → POP
RETE DI ACCESSO: Cliente → Drop Cliente → Cavo di Accesso di Distribuzione → Sede COLT
RETE DI TRASPORTO: Rete Revolution (RA/RC) → POP
Nota: La Rete Revolution utilizza RA Italia (Urban Regional / Dense Urban) oppure RC Italia (Ultra Dense Urban / Dense Urban) in base alla tipologia della sede.
Il cliente richiede di collegare due sedi (Sede A ↔ Sede Z) con capacità di banda (es. 1G, 2G, 10G, 100G).
Flusso operativo:
- Per ogni sede, si identifica la Centrale COLT più vicina
- La Rete di Accesso collega ogni sede alla propria Centrale COLT (TIM/FiberCop)
- Se le sedi sono nella stessa regione:
- Il percorso attraversa la Rete RA e/o RC con il tragitto più breve tra le due Centrali COLT
- Se le sedi sono in regioni diverse:
- Da ogni Centrale COLT si raggiunge il NODO A1 regionale
- I NODI A1 comunicano tra regioni tramite la Rete RTN (Rete di Trasporto Nazionale)
- Dal NODO A1 di destinazione si procede verso la Centrale COLT della Sede Z
I due tool lavorano in sinergia per completare l'analisi di fattibilità:
📍 NAT (National Topography)
|
🧭 CRO (Central Routing Optimizer)
|
Workflow tipico: Con NAT si individua il cliente, si verificano le centrali COLT vicine e si studia l'area. Con CRO si analizzano i percorsi sulla rete di trasporto, le diversificazioni per eventuale protezione e si elabora l'analisi costi.
Componenti Architetturali Principali
Core computazionale basato su algoritmo Dijkstra con estensioni proprietarie per gestione vincoli avanzati. Supporta calcolo parallelo fino a 30 percorsi primari (Std) ottimizzati per distanza minima e 10 percorsi alternativi diversificati (Div) con overlap massimo configurabile. Include motore di eliminazione duplicati intelligente e validazione topologica real-time.
Repository completo della rete nazionale con 500+ centrali (Tipo 1, 2, 3), 5.700+ collegamenti fiber/DWDM e metadati estesi (coordinate GPS, CLLI codes, zone amministrative, stati operativi, progressivi di rete). Aggiornamento continuo tramite sincronizzazione con sistemi CR/GI. Supporto query complesse con indexing ottimizzato.
Mappe interattive powered by Leaflet.js + OpenStreetMap con overlay percorsi calcolati, marker centrali personalizzati, filtri geografici multi-livello (Area, Zona, Stato), strumenti di misura distanze e geocoding bidirezionale. Supporto layer switching e export screenshot ad alta risoluzione.
Suite completa utility: Undo/Redo ricerche (history management), Export TXT/CSV multi-formato per integrazione sistemi esterni, Calcolatore Attenuazione Fibra con formule ITU-T, Geocoding indirizzi italiani via Nominatim, Ricerca Centrali Vicine con routing stradale OSRM.
Stack Tecnologico
| Componente | Tecnologia | Versione/Note |
|---|---|---|
| Frontend | HTML5, CSS3, JavaScript ES6+ | Vanilla JS - No frameworks per performance |
| Mapping | Leaflet.js | v1.9.4 - Open-source map engine |
| Map Tiles | OpenStreetMap | Tile server pubblico + fallback |
| Routing Engine | Custom Dijkstra + OSRM | Dijkstra proprietario + OSRM per routing stradale |
| Geocoding | Nominatim (OSM) | API pubblica con rate limiting |
| Database | JSON embedded + localStorage | 5.700+ records in-memory per performance |
| UI Framework | Custom CSS + Design System | TIM Corporate Identity guidelines |
Metriche di Performance
🏗️ Architettura Sistema
Design architetturale, flusso dati e interazioni tra componenti
Architettura Three-Tier
CRO adotta un'architettura three-tier (presentazione, logica, dati) completamente client-side per massimizzare performance e ridurre latenza. Non richiede server backend per operazioni ordinarie.
HTML5 + CSS3 + Leaflet.js
JavaScript ES6+ • Dijkstra Engine • Validation
JSON Database • localStorage • IndexedDB
Flusso Dati Operativo
Workflow tipico di una ricerca percorsi:
- Input Utente → Form "Ricerca Percorsi" con selezione A/Z e vincoli
- Validazione Input → Controllo esistenza centrali, coerenza vincoli, range valori
- Preprocessing → Costruzione grafo di rete da database, applicazione filtri stato
- Algoritmo Dijkstra → Calcolo K-shortest paths (K=30) con vincoli attivi
- Path Diversification → Calcolo 10 percorsi Div con overlap <30% rispetto a 1.1
- Postprocessing → Eliminazione duplicati, ordinamento distanza, aggregazione metadati
- Rendering Risultati → Popolamento tabelle HTML, disegno percorsi su mappa
- User Interaction → Selezione percorsi, zoom mappa, export TXT/CSV
Gestione Stato Applicazione
Lo stato applicativo è gestito tramite pattern Observable con listeners su eventi DOM. Variabili globali di stato includono:
| Variabile | Tipo | Descrizione |
|---|---|---|
LINKS |
Array | Database collegamenti (5.700+ records) |
NODES |
Array | Database centrali (500+ records) |
currentRoutes |
Array | Percorsi calcolati (Std + Div) |
selectedRoutes |
Set | Percorsi selezionati per export |
mapInstance |
Leaflet.Map | Istanza mappa interattiva |
routeLayers |
Map | Layer mappa per percorsi disegnati |
searchHistory |
Array | Storico ricerche per undo/redo |
Sicurezza e Validazione
Meccanismi di sicurezza implementati:
- Input Sanitization - Escape caratteri speciali, validazione range numerici
- SQL Injection Prevention - N/A (no backend SQL, solo JSON client-side)
- XSS Protection - textContent invece di innerHTML per user input
- CSRF Protection - N/A (applicazione stateless senza autenticazione)
- Rate Limiting - Throttling ricerche (max 1/secondo) per prevenire abuse
- Data Validation - Schema validation per tutti i record database
Scalabilità e Performance
Ottimizzazioni implementate per performance:
- Lazy Loading - Caricamento progressivo database (chunk 1000 records)
- Memoization - Cache risultati Dijkstra per query ripetute
- Web Workers - Calcolo percorsi in background thread (opzionale)
- Virtual Scrolling - Rendering only visible rows in tabelle (>1000 items)
- IndexedDB - Persistenza locale per offline mode (future release)
- Service Workers - PWA capabilities per caching aggressivo (roadmap)
⚡ Funzionalità Principali
Overview delle capacità del sistema e modalità operative
1. Algoritmo Dijkstra Vincolato
Calcolo automatico fino a 30 percorsi primari (Std) ottimizzati per distanza e 10 alternativi diversificati (Div). Supporta vincoli multipli:
- Centrali obbligatorie (selezione multipla)
- Centrali da evitare (blacklist)
- Distanza min/max in km
- Collegamenti min/max (hop count)
- Toggle "Solo Collegamenti NON ATTIVI" per analisi su tratte dismesse
2. Database Enterprise RC Italia
Repository con 500+ centrali e metadati completi. Funzionalità:
- Ricerca case-insensitive su ID, GAT, CLLI, Nome
- Filtri per Zona (NORD/CENTRO/SUD), Area, Regione
- Personalizzazione colonne visualizzate
- Export CSV con encoding UTF-8 BOM
- Selezione multipla per operazioni batch
3. Geocodifica & Centrale più Vicina
Conversione automatica indirizzo → coordinate WGS84 tramite Nominatim API OpenStreetMap. Algoritmo Haversine per calcolo distanze ortodromiche. Identificazione automatica della centrale più vicina con indicatore permanente sulla mappa.
4. Mappa Topografica Interattiva
Visualizzazione con Leaflet.js e auto-inizializzazione. Features:
- Overlay percorsi con codifica colori (primari blu, alternativi arancione)
- Layer control per gestione visibilità
- Misurazione distanze tra due punti (attivabile)
- Zoom automatico su selezione o intera rete
- Highlight mode per evidenziare percorsi specifici
5. Calcolatore Attenuazione ITU-T
Stima professionale perdite in fibra ottica secondo standard ITU-T. Layout ottimizzato a 2 colonne:
- Colonna Sinistra: Form input (tipo fibra, lunghezza, collegamenti) + risultato stile "Riepilogo Economico" con tabella dettagliata
- Colonna Destra: Legenda con formula ITU-T, tabella coefficienti α (dB/km), note connettorizzazioni, esempio pratico
- Multimodale (MM): 850 nm (α=3.0 dB/km), 1300 nm (α=1.0 dB/km)
- Monomodale (SM): 1310 nm (α=0.35 dB/km), 1550 nm (α=0.22 dB/km)
- Calcolo perdite connettorizzazioni (0.3 dB cadauna, 2 per bretella)
- Output formattato: tipo fibra, km, collegamenti, perdita fibra, perdita connettori, totale dB
6. Sistema Undo Intelligente
Cronologia automatica delle ultime 20 ricerche con salvataggio completo parametri. Ripristino istantaneo con un click. Persistenza in localStorage tra sessioni browser. Risparmio stimato: da 5 minuti a 5 secondi!
7. Export Multi-formato
Export percorsi in formato TXT (percorsi Std e Div separati) e CSV per elaborazioni Excel. Bottone "Copia Formattata" per clipboard. Output CR/GI ready.
8. Analisi Costi per Fattibilità
Modulo dedicato alla stima dei costi associati a Link, Code Cliente e Apparati/Cestelli. Features:
- Riepilogo economico calcolato in tempo reale
- Selezione multipla su tre pannelli: Link RA/RC, Coda Cliente, Apparati
- Visualizzazione costi con e senza sconto
- Export riepilogo in formato TXT
9. S.d.F Internalizzati
Sistema di analisi fattibilità internalizzate con caricamento file Excel:
- Parsing automatico colonne: Fattibilità, Tipo, Esito, Priorità, Scadenza, Territorio
- 6 grafici interattivi (Per Esito, Per Tipo, Per Priorità, Per Territorio, Esito Aggregato, Scadenze)
- Tabella filtrabile con ricerca su S.d.F, Cliente, Territorio
- Export CSV dei dati filtrati
10. Confronto DB Excel
Tool per verifica allineamento tra due versioni di database Excel:
- Confronto foglio per foglio, cella per cella
- Report TXT dettagliato delle differenze
- Export JSON del primo foglio del DB nuovo
- Statistiche: fogli confrontati, celle confrontate, differenze trovate
11. Marker Centrali su Mappa
Visualizzazione delle centrali di inizio e fine per ogni collegamento sulla mappa dei percorsi:
- Marker circolari blu con popup informativo
- Nome Centrale e CLLI visibili al click
- Deduplicazione automatica delle centrali ripetute
- Supporto completo per DB RA e DB RC
12. Filtro POP (NODO A1)
Toggle per filtrare le 32 centrali POP nazionali (NODO A1) come destinazione percorsi:
- Attivabile nei campi "Centrale di Arrivo" di entrambe le sezioni RC e RA
- Lista delle 32 centrali POP: ROMA, MILANO, TORINO, NAPOLI, BOLOGNA, FIRENZE, ecc.
- Match esatto sul CLLI (evita centrali omonime)
- Placeholder dinamico con indicatore visivo rosso quando attivo
13. Colorazione e Conteggio Collegamenti RA
Sistema di colorazione semantica e conteggio personalizzato per i collegamenti RA:
- Verde (T1↔T2, T2↔T2): Collegamenti principali, contano 1 ciascuno
- Blu TIM (T2↔T3): Collegamenti intermedi, contano 0.5 (ogni 2 = 1)
- Standard (T3↔T3): Collegamenti di transito, non contano
- Centrali di partenza e arrivo evidenziate in grassetto
- Percorsi diversificati automatici verso altra Tipo 1 sullo stesso arco
14. Gestione Archi Multipli e Selezione Obbligatoria (RA)
Sistema di rilevamento e gestione quando due centrali appartengono a più archi compatibili:
- Rilevamento automatico: il sistema verifica se le centrali di Partenza e Arrivo sono presenti su più archi
- Mini-label di avviso: quando gli archi compatibili sono multipli, compare il messaggio "⚠️ Più archi compatibili: seleziona 1 arco nella sezione Filtro per Arco per calcolare"
- Selezione obbligatoria: prima di calcolare il percorso, è necessario selezionare un singolo arco dal filtro "🔍 Filtro per Arco (Checkbox)"
- Disambiguazione percorso: la selezione dell'arco determina univocamente il percorso da calcolare lungo quella specifica direttrice
- Bottone [Premi Qui]: se una centrale appartiene a più archi, appare un bottone per visualizzare la lista completa degli archi
Se selezioni AVEZZANO come Partenza e L'AQUILA come Arrivo, ed entrambe appartengono sia all'arco AM_arco_xxx
che a AM_arco_yyy, il sistema ti chiederà di scegliere quale arco utilizzare prima di calcolare il percorso.
15. Ricerca Multi-Arco (RA)
Funzionalità avanzata per calcolare tutti i percorsi su tutti gli archi compatibili tra due centrali:
- 🔀 Multi-Arco: bottone dedicato che calcola contemporaneamente i percorsi Std su ogni arco condiviso tra Partenza e Arrivo
- Tabella risultati estesa: mostra una riga per ogni arco con colonna dedicata "🔗 Arco" che identifica l'arco di appartenenza
- Percorsi Div per arco: ogni riga ha un bottone "▶ Percorso Div" per calcolare il percorso diversificato specifico per quell'arco
- Visualizzazione mappa singola: bottone "🗺️" per visualizzare sulla mappa il singolo percorso di un arco specifico
- Mappa Multi-Arco: visualizza tutti i percorsi di tutti gli archi sulla stessa mappa per un confronto visivo immediato
- Export TXT Multi-Arco: esporta tutti i percorsi con indicazione dell'arco di appartenenza e eventuale Div calcolato
Ideale quando devi confrontare rapidamente tutte le opzioni di instradamento tra due centrali che appartengono a più archi. Invece di selezionare un arco alla volta, ottieni una vista d'insieme immediata con distanze, collegamenti e possibilità di diversificazione per ogni arco.
🧮 Algoritmi Dettagliati
Implementazione tecnica degli algoritmi di routing e ottimizzazione
Algoritmo Dijkstra Modificato
Il core di CRO utilizza una variante ottimizzata dell'algoritmo di Dijkstra per trovare i K-shortest paths (K=30) in un grafo pesato rappresentante la rete RC Italia.
- Tempo: O(K × (|E| + |V|log|V|)) dove K=30, |E|=5700, |V|=500
- Spazio: O(|V| + |E|) = O(6200) ~ 6KB per grafo in memoria
- Performance reale: ~200ms su Chrome/Firefox, ~150ms su Safari
Pseudocodice Dijkstra con Vincoli
function dijkstraWithConstraints(graph, start, end, constraints):
// Inizializzazione
distances = Map() // distanza minima da start
previous = Map() // nodo predecessore
pqueue = PriorityQueue() // coda priorità (min-heap)
// Imposta distanze iniziali
for each node in graph.nodes:
distances[node] = INFINITY
previous[node] = NULL
distances[start] = 0
pqueue.push(start, 0)
while pqueue is not empty:
current = pqueue.pop()
if current == end:
break // Percorso trovato
for each neighbor in graph.neighbors(current):
// Applica vincoli
if isBlacklisted(neighbor, constraints):
continue
if !meetsConstraints(neighbor, constraints):
continue
// Calcola distanza attraverso current
alt = distances[current] + graph.weight(current, neighbor)
if alt < distances[neighbor]:
distances[neighbor] = alt
previous[neighbor] = current
pqueue.push(neighbor, alt)
// Ricostruisci percorso
return reconstructPath(previous, start, end)
Algoritmo Path Diversification (Div)
Per calcolare i 10 percorsi alternativi diversificati (Div), CRO implementa un algoritmo di penalizzazione archi per garantire overlap massimo 30% rispetto al percorso primario 1.1.
Per ogni percorso alternativo, gli archi già utilizzati nel percorso 1.1 ricevono una penalità moltiplicativa di 10x sul peso. Questo forza Dijkstra a esplorare percorsi fisicamente diversi pur mantenendo ottimizzazione distanza. L'overlap è validato post-calcolo: se >30%, il percorso è scartato.
function calculateDiversifiedPaths(graph, start, end, primaryPath):
diversifiedPaths = []
primaryEdges = Set(primaryPath.edges)
for i = 1 to 10:
// Penalizza archi del percorso primario
tempGraph = graph.clone()
for each edge in primaryEdges:
tempGraph.weight(edge) *= 10
// Calcola percorso alternativo
altPath = dijkstra(tempGraph, start, end)
// Valida overlap
overlap = calculateOverlap(altPath, primaryPath)
if overlap <= 0.30:
diversifiedPaths.push(altPath)
// Aggiungi archi di altPath al set di penalizzazione
primaryEdges.addAll(altPath.edges)
if diversifiedPaths.length >= 10:
break
return diversifiedPaths
Validazione Topologica
CRO esegue validazioni automatiche su ogni percorso calcolato:
- Connessione Fisica - Ogni hop deve essere un collegamento esistente in LINKS
- Rispetto Vincoli - Centrali obbligatorie presenti, blacklist rispettate
- Range Distanza - Distanza totale tra min/max specificati
- Range Collegamenti - Numero hop tra min/max specificati
- Stato Collegamenti - Se "Solo NON ATTIVI" attivo, tutti gli hop devono essere NON_ATTIVO
- Tipo Centrali - Validazione sequenze Tipo 1 ↔ Tipo 2 (Tipo 3 trasparente)
- No Loops - Nessuna centrale visitata più volte nel percorso
Eliminazione Duplicati
Percorsi identici (stessa sequenza centrali) vengono eliminati tramite hash-based deduplication.
Hash calcolato: SHA256(centrali.join('-')). Complessità: O(N) con N=numero percorsi.
🗄️ Database Schema
Struttura dati, relazioni e indicizzazione del repository RC Italia
Schema Centrali (NODES)
Ogni centrale è rappresentata da un oggetto JSON con i seguenti campi:
| Campo | Tipo | Descrizione | Esempio |
|---|---|---|---|
id |
String/Number | Identificativo univoco centrale | "ROMA001" |
name |
String | Nome completo centrale | "ROMA SUD" |
clli |
String | Common Language Location ID (ITU-T) | "RMITSUD" |
gat |
String | Codice GAT interno | "RM9876" |
lat |
Number | Latitudine WGS84 (6 decimali) | 41.891234 |
lon |
Number | Longitudine WGS84 (6 decimali) | 12.512345 |
zona |
String | Zona amministrativa | "RM" (Lazio) |
area |
Enum | Macro-area | "CENTRO" |
regione |
String | Regione italiana | "Lazio" |
TipoSede |
Enum | Classificazione centrale | "Tipo 1", "Tipo 2", "Tipo 3" |
Schema Collegamenti (LINKS)
Ogni collegamento è rappresentato da un oggetto JSON con i seguenti campi:
| Campo | Tipo | Descrizione | Esempio |
|---|---|---|---|
id |
String/Number | Identificativo univoco collegamento | "LINK12345" |
from |
String | ID centrale di partenza | "ROMA001" |
to |
String | ID centrale di arrivo | "MILANO001" |
from_name |
String | Nome centrale origine | "ROMA SUD" |
to_name |
String | Nome centrale destinazione | "MILANO NORD" |
distance_km |
Number | Distanza in km (2 decimali) | 476.32 |
stato |
Enum | Stato operativo | "ATTIVO", "NON_ATTIVO", etc. |
zona |
String | Zona amministrativa | "RM" |
arco |
String | Segmento rete/dorsale | "Arco_1" |
Prog |
String | Progressivo di rete | "1-2-3-4" |
Relazioni e Integrità Referenziale
Relazioni implementate:
- LINKS.from → NODES.id (foreign key)
- LINKS.to → NODES.id (foreign key)
- Validazione: Al caricamento, tutti i from/to devono esistere in NODES
- Cascading: Non applicabile (database read-only in produzione)
Indicizzazione e Performance
Indici creati per query ottimali:
| Indice | Campi | Tipo | Use Case |
|---|---|---|---|
| PRIMARY_NODES | id | Hash | Lookup O(1) per ID centrale |
| PRIMARY_LINKS | id | Hash | Lookup O(1) per ID collegamento |
| IDX_NODES_NAME | name | B-Tree | Ricerca per nome O(log N) |
| IDX_NODES_CLLI | clli | Hash | Ricerca per CLLI O(1) |
| IDX_LINKS_FROM | from | Hash | Query neighbors O(1) |
| IDX_LINKS_TO | to | Hash | Query incoming links O(1) |
| IDX_LINKS_STATO | stato | Bitmap | Filtro per stato O(1) |
Formato Storage JSON
Esempio record completo:
{
"NODES": [
{
"id": "ROMA001",
"name": "ROMA SUD",
"clli": "RMITSUD",
"gat": "RM9876",
"lat": 41.891234,
"lon": 12.512345,
"zona": "RM",
"area": "CENTRO",
"regione": "Lazio",
"TipoSede": "Tipo 1"
}
],
"LINKS": [
{
"id": "LINK12345",
"from": "ROMA001",
"to": "MILANO001",
"from_name": "ROMA SUD",
"to_name": "MILANO NORD",
"distance_km": 476.32,
"stato": "ATTIVO",
"zona": "RM",
"arco": "Arco_1",
"Prog": "1-2-3-4"
}
]
}
🔌 API Reference
Funzioni JavaScript pubbliche e interfacce programmabili
Funzioni Core di Routing
runBaseRoutesSearch()
Descrizione: Esegue ricerca percorsi con parametri da form
Parametri: Nessuno (legge da DOM)
Return: void (aggiorna UI con risultati)
Side Effects: Popola variabile globale currentRoutes
// Esempio uso
document.getElementById('btn-search').onclick = runBaseRoutesSearch;
calculateShortestPath(startId, endId, constraints)
Descrizione: Calcola singolo percorso shortest path
Parametri:
startId(String) - ID centrale partenzaendId(String) - ID centrale arrivoconstraints(Object) - Vincoli opzionali
Return: Object {path: Array, distance: Number, hops: Number}
// Esempio uso
const result = calculateShortestPath('ROMA001', 'MILANO001', {
mandatory: ['FIRENZE001'],
blacklist: ['BOLOGNA001'],
maxDistance: 600
});
console.log(result.path); // ['ROMA001', 'FIRENZE001', 'MILANO001']
Funzioni Database
searchNodes(query)
Descrizione: Ricerca centrali per ID/Nome/CLLI
Parametri: query (String) - Termine di ricerca
Return: Array di oggetti Node
// Esempio uso
const results = searchNodes('ROMA');
results.forEach(node => console.log(node.name));
getNodeById(id)
Descrizione: Recupera centrale per ID
Parametri: id (String) - ID centrale
Return: Object Node o null
Complessità: O(1) tramite hash map
Funzioni Mappa
drawRouteOnMap(route, color)
Descrizione: Disegna percorso su mappa Leaflet
Parametri:
route(Array) - Array di ID centralicolor(String) - Colore linea (hex/nome)
Return: Leaflet.Polyline object
// Esempio uso
const polyline = drawRouteOnMap(['ROMA001', 'FIRENZE001'], '#0066CC');
polyline.bindPopup('Percorso ROMA-FIRENZE');
Funzioni Export
exportRoutesTxt(routes)
Descrizione: Genera export TXT formattato
Parametri: routes (Array) - Array di oggetti Route
Return: String (contenuto file TXT)
Formato: CR/GI compliant con intestazioni
Eventi e Callbacks
| Evento | Trigger | Payload |
|---|---|---|
routes:calculated |
Calcolo percorsi completato | {routes: Array, time: Number} |
route:selected |
Click su riga percorso | {routeId: String, route: Object} |
map:ready |
Inizializzazione mappa completa | {mapInstance: Leaflet.Map} |
database:loaded |
Caricamento database completato | {nodes: Number, links: Number} |
🔧 Troubleshooting Avanzato
Guida alla risoluzione problemi, error codes e debug workflow
Catalogo Error Codes
| Codice | Messaggio | Causa | Soluzione |
|---|---|---|---|
ERR_001 |
Centrale non trovata | ID inesistente in database | Verificare ID in tab Database Rete |
ERR_002 |
Nessun percorso trovato | Vincoli troppo restrittivi / Rete disconnessa | Ridurre vincoli o verificare connettività |
ERR_003 |
Distanza fuori range | Min > Max in vincoli distanza | Correggere range min/max |
ERR_004 |
Centrale start = end | Stessa centrale per A e Z | Selezionare centrali diverse |
ERR_005 |
Timeout calcolo | Calcolo > 30 secondi | Semplificare vincoli o ricaricare pagina |
ERR_006 |
Mappa non caricata | Tiles OSM non disponibili | Verificare connessione internet |
ERR_007 |
Export fallito | Browser block download/clipboard | Permettere download nei settings browser |
Debug Workflow Step-by-Step
- Step 1: Verifica esistenza centrali in Database Rete
- Step 2: Controlla vincoli distanza min/max (non troppo restrittivi?)
- Step 3: Verifica blacklist (non stai bloccando tutte le vie?)
- Step 4: Controlla filtro "Solo NON ATTIVI" (deseleziona se non necessario)
- Step 5: Prova con percorso semplice senza vincoli per testare connettività
- Step 6: Se persiste, probabile rete disconnessa tra A e Z
- Step 1: Chiudi tab browser non utilizzati (libera RAM)
- Step 2: Ricarica pagina CRO (clear state)
- Step 3: Riduci numero percorsi da 30 a 10 (modifica codice)
- Step 4: Disabilita rendering mappa durante calcolo
- Step 5: Usa browser moderno (Chrome/Firefox > Edge/Safari)
- Step 6: Controlla Task Manager: CPU/RAM disponibili?
Log Analysis
Console Browser - Messaggi Chiave da Monitorare:
// Log successo
[CRO] Database caricato: 500 centrali, 5700 collegamenti
[CRO] Calcolo completato in 187ms: 30 percorsi trovati
// Log warning
[CRO] Warning: Blacklist contiene 50% centrali - percorsi limitati
[CRO] Warning: Timeout OSRM - routing stradale non disponibile
// Log errore
[CRO] Error ERR_002: Nessun percorso tra ROMA001 e ISOLA_X
[CRO] Error: Mappa non inizializzata - retry in 2s
Problemi Comuni e Fix Rapidi
Fix: Controlla popup blocker browser. Prova tasto destro → "Salva con nome" sul link generato.
Fix: Verifica connessione internet. OpenStreetMap tiles richiede connessione attiva. No offline mode.
Fix: localStorage pieno (max 5MB). Clear con F12 → Application → Storage → Clear all.
Fix: Controlla coordinate inserite (WGS84 required). Lat 35-47, Lon 6-19 per Italia.
⚡ Performance Tuning
Ottimizzazioni, benchmark e best practices per massime prestazioni
Benchmark Reference
Tempi medi su hardware standard (Intel i5, 8GB RAM, Chrome):
| Operazione | Tempo Medio | Worst Case | Best Case |
|---|---|---|---|
| Caricamento Database | 150ms | 300ms | 80ms |
| Calcolo 30 Percorsi | 200ms | 800ms | 120ms |
| Rendering Mappa (30 routes) | 400ms | 1200ms | 250ms |
| Export TXT | 50ms | 150ms | 20ms |
| Ricerca Database | 5ms | 20ms | 1ms |
| Geocoding Indirizzo | 500ms | 3000ms | 200ms |
Ottimizzazioni Implementate
Database caricato progressivamente in chunk da 1000 records. Interfaccia disponibile immediatamente, popolamento database in background. Risparmio: 80% perceived load time.
Cache dei risultati Dijkstra per query identiche. Hash basato su (start, end, constraints). Hit rate: 35% su utilizzo tipico. Risparmio: 200ms per hit.
Rendering solo righe visibili in viewport. Per tabelle >1000 righe. Risparmio: 90% DOM nodes, 70% render time.
Search input con debounce 300ms. Previene ricerche continue durante digitazione. Riduzione: 80% query inutili.
Best Practices Utilizzo
- Chiudi tab non utilizzati - CRO usa ~150MB RAM, libera risorse
- Usa Chrome o Firefox - Engine JavaScript 20% più veloce di Safari/Edge
- Limita vincoli - Ogni vincolo aggiuntivo aumenta complessità ~15%
- Calcola percorsi in batch - Evita calcoli singoli ripetuti
- Disabilita rendering mappa durante batch - 3x speedup su operazioni massive
- Clear localStorage periodicamente - Ogni 50 ricerche per prevenire slow-down
- Ricarica pagina dopo 100+ operazioni - Memory leaks minimi ma presenti
Configurazioni Avanzate (Sviluppatori)
// File: config.js - Performance Tuning
// Numero max percorsi da calcolare (default: 30)
const MAX_PRIMARY_ROUTES = 30; // Riduci a 10 per +70% speed
// Timeout calcolo (default: 30000ms)
const CALCULATION_TIMEOUT = 30000; // Aumenta se network complex
// Cache size (default: 100)
const CACHE_SIZE = 100; // Aumenta a 500 per +10% hit rate
// Virtual scrolling threshold (default: 1000)
const VIRTUAL_SCROLL_THRESHOLD = 1000; // Riduci a 500 per low-end
// Debounce delay (default: 300ms)
const DEBOUNCE_DELAY = 300; // Riduci a 150ms per UX più reattiva
🔗 Integrazioni
Export formati, tool esterni compatibili e API endpoints
Formati Export Supportati
Descrizione: Formato human-readable CR/GI compliant
Struttura:
PERCORSI PRIMARI (Std):
===================================
1.1 | ROMA SUD → FIRENZE NORD → MILANO CENTRO | 476.32 km | 2 hop
Collegamenti: LINK001, LINK045
ID: ROMA001-FIRENZE001-MILANO001
PERCORSI ALTERNATIVI (Div):
===================================
2.1 | ROMA SUD → BOLOGNA EST → MILANO CENTRO | 512.10 km | 2 hop
Collegamenti: LINK078, LINK123
Overlap: 15%
Encoding: UTF-8 with BOM
Use Case: Report cartacei, email, documentazione
Descrizione: Formato machine-readable per elaborazioni
Schema:
ID,Tipo,Centrali,Collegamenti,Distanza_km,Hop
1.1,Primario,"ROMA SUD|FIRENZE NORD|MILANO","LINK001|LINK045",476.32,2
2.1,Alternativo,"ROMA SUD|BOLOGNA EST|MILANO","LINK078|LINK123",512.10,2
Delimiter: Virgola (,) | Separator interno: Pipe (|)
Use Case: Import Excel, elaborazioni Python, database
Tool Esterni Compatibili
| Tool | Formato | Procedura Import | Use Case |
|---|---|---|---|
| Microsoft Excel | CSV | Data → From Text/CSV → Import | Analisi statistica, pivot tables |
| Python Pandas | CSV | pd.read_csv('routes.csv') |
Machine learning, data science |
| Google Sheets | CSV | File → Import → Upload CSV | Collaborazione team, report online |
| QGIS | JSON + Coordinates | Custom script Python | GIS analysis, mapping avanzato |
| Power BI | CSV | Get Data → Text/CSV | Business intelligence, dashboard |
API Endpoints (Future Release)
Roadmap per integrazione backend:
⏳ Previsto Q2 2026:
POST /api/v1/routes/calculate- Calcolo percorsi via RESTGET /api/v1/database/nodes- Query centraliGET /api/v1/database/links- Query collegamentiPOST /api/v1/export- Export programmato batch
Workflow Integrazione Tipico
- Esegui ricerca percorsi in CRO con vincoli desiderati
- Export CSV → Salva come
routes.csv - Import in Python:
df = pd.read_csv('routes.csv') - Analizza:
df['Distanza_km'].describe() - Visualizza:
df['Distanza_km'].plot.hist() - Report: Generate PDF con matplotlib
📖 Glossario Tecnico
Terminologia DWDM, telecomunicazioni e standard ITU-T
A-D
- Attenuazione (α)
- Perdita di potenza segnale ottico lungo fibra. Unità: dB/km. Valori tipici: 0.22 dB/km @ 1550nm (SM)
- CLLI (Common Language Location Identifier)
- Codice standard ITU-T E.164 per identificazione univoca centrali/siti. Formato: 8-11 caratteri alfanumerici
- CR/GI (Change Request / Gestione Impianti)
- Processi Telecom Italia per richieste modifiche rete e gestione asset infrastrutturali
- Dijkstra
- Algoritmo greedy per shortest path in grafi pesati. Complessità: O(|E| + |V|log|V|) con Fibonacci heap
- DWDM (Dense Wavelength Division Multiplexing)
- Tecnologia multiplexing ottico con 40-80+ canali su singola fibra. Spacing: 50 GHz (ITU-T G.694.1)
E-H
- EDFA (Erbium-Doped Fiber Amplifier)
- Amplificatore ottico per banda C (1530-1565 nm). Gain tipico: 20-30 dB
- GAT
- Codice identificativo interno Telecom Italia per gestione asset territoriali
- Haversine
- Formula trigonometrica per calcolo distanza ortodromica (great-circle) su sfera. Errore <0.5% per distanze <1000 km
- Hop
- Singolo collegamento tra due centrali adiacenti. Count: numero totale collegamenti in un percorso
I-O
- ITU-T (International Telecommunication Union - Telecom)
- Organismo standardizzazione internazionale telecomunicazioni. Standard rilevanti: G.652 (fibra), G.694.1 (DWDM)
- K-Shortest Paths
- Algoritmo per trovare K percorsi più corti (non solo il migliore). CRO: K=30 per primari, K=10 per alternativi
- Leaflet
- Libreria JavaScript open-source per mappe interattive. Lightweight (39 KB gzipped)
- Monomodale (SM - Single Mode)
- Fibra ottica con core 9 μm. Per lunghe distanze (>2 km). Bande: O, E, S, C, L
- Nominatim
- Geocoding engine OpenStreetMap. API pubblica con rate limit: 1 req/sec
- Overlap
- Percentuale archi condivisi tra due percorsi. Formula: (Archi_comuni / Archi_totali) × 100
- OSRM (Open Source Routing Machine)
- Engine routing stradale basato su OpenStreetMap. Algoritmo: Contraction Hierarchies
P-Z
- Percorso Primario (Std)
- Percorso ottimizzato per distanza minima senza penalizzazioni. CRO calcola fino a 30 percorsi Std
- Percorso Alternativo (Div)
- Percorso diversificato con overlap <30% vs 1.1. Per ridondanza e disaster recovery
- RA Italia (Rete Aggregation Italia)
- Rete di aggregazione TIM che raccoglie traffico dalle centrali periferiche verso i nodi Core (NODO A1). Struttura gerarchica: Tipo 3 → Tipo 2 → Tipo 1
- RC Italia (Rete Core Italia)
- Backbone nazionale TIM S.p.A. Layer 0/1 (fibra/DWDM) per interconnessione centrali principali. Include 32 NODO A1 (POP nazionali)
- Rete Revolution
- Progetto TIM di evoluzione infrastruttura ottica nazionale. Modernizzazione rete trasporto con tecnologie DWDM di nuova generazione e incremento capacità
- Tipo 1 / Tipo 2 / Tipo 3
- Classificazione centrali TIM. Tipo 1: HUB RA+RC (NODO A1, interconnesso Core). Tipo 2: HUB RA (nodi intermedi). Tipo 3: Passaggio (endpoint/trasparenti)
- WGS84 (World Geodetic System 1984)
- Sistema riferimento geodetico standard GPS. Coordinate: latitudine (-90,+90), longitudine (-180,+180)
Standard ITU-T Riferimento
| Standard | Titolo | Rilevanza CRO |
|---|---|---|
| G.652 | Fibra ottica monomodale standard | Specifiche tecniche fibra utilizzata in RC Italia |
| G.694.1 | DWDM frequency grid | Grid ITU per canali DWDM (50 GHz spacing) |
| G.709 | OTN (Optical Transport Network) | Layer trasporto ottico per backbone |
| E.164 | Numbering plan internazionale | Base per codici CLLI centrali |
🔄 Workflow Operativo (11 Passi)
Procedura standard end-to-end per analisi fattibilità collegamento
- Raccolta requisiti da ticket CR/GI: centrali A-B, vincoli, requisiti di ridondanza
- Verifica esistenza centrali nel database (tab "Database Rete")
- Impostazione filtri geografici (es. solo Area LAZIO per ridurre search space)
- Configurazione vincoli: centrali obbligatorie, centrali da evitare, distanza/hop min-max
- Esecuzione ricerca: click "Avvia Ricerca" → elaborazione 2-10 secondi
- Analisi risultati: confronto distanze, numero hop, percorsi dettagliati nella tabella
- Visualizzazione mappa: click su percorso + "Visualizza su Mappa" per analisi topografica
- Calcolo attenuazione: vai al tab "Calcolatore Attenuazione", inserisci lunghezza e tipo fibra
- Selezione percorso ottimale: basati su distanza, attenuazione, diversificazione geografica
- Export documentazione: esporta in TXT (allegato tecnico) o CSV (elaborazioni)
- Archiviazione: salva screenshot mappa, allega export a ticket CR/GI, usa Undo per tornare indietro se necessario
💼 Caso d'Uso Reale: ROMA SUD – ROMA INVIOLATELLA
Esempio pratico di utilizzo con vincoli multipli
Requisito CR/GI: Collegamento ROMA SUD → ROMA INVIOLATELLA con transito per ROMA OSTIENSE.
Procedura:
- Tab "Ricerca Percorsi": inserisci Partenza: "ROMA SUD"
- Inserisci Arrivo: "ROMA INVIOLATELLA"
- In "Centrali Obbligatorie" seleziona: ROMA OSTIENSE
- Opzionale: imposta Distanza Max: 50 km
- Click "Avvia Ricerca"
Risultato atteso:
Il sistema calcola percorsi che DEVONO passare per ROMA OSTIENSE. Ricevi:
- Percorso primario 1.1: ROMA SUD → ROMA OSTIENSE → ROMA INVIOLATELLA
- Percorsi alternativi 2.1, 2.2, ... (se esistono) geograficamente diversificati
- Distanze parziali per ogni hop
- Coordinate WGS84 di ogni centrale attraversata
Verifica attenuazione:
Se il percorso 1.1 è lungo 35 km con 3 collegamenti (6 connettorizzazioni), vai al tab "Calcolatore Attenuazione":
- Lunghezza tratta: 35 km
- Tipo fibra: SM 1550 nm (α = 0.22 dB/km)
- Collegamenti: 3 (= 6 connettorizzazioni × 0.3 dB)
Risultato: Perdita totale = (35 × 0.22) + (6 × 0.3) = 7.7 + 1.8 = 9.5 dB
Dentro budget tipico OTN (15-20 dB) → ✓ Collegamento FATTIBILE
💡 Tips Professionali
Suggerimenti per ottimizzare l'utilizzo del tool
- Usa filtri geografici (Area/Zona) per ricerche locali → performance x3
- Per percorsi lunghi (>200 km), limita a 15 percorsi invece di 30 → risparmio tempo 50%
- Verifica sempre su mappa la diversificazione geografica dei backup
- Calcola attenuazione prima di confermare fattibilità (non solo distanza!)
- Non usare nomi parziali (es. "ROMA" → 50+ risultati). Usa nome completo o GAT
- Non impostare vincoli impossibili (es. distanza max 10 km se A-B distano 100 km)
- Non inserire 10+ centrali obbligatorie → rallenta calcolo e può dare 0 risultati
- Non modificare CSV export manualmente → rispetta formato colonne
- Usa Undo per testare più configurazioni vincoli in pochi secondi
- Attiva "Solo NON ATTIVI" per analisi manutentive (impatto dismissioni)
- Funzione "Centrale più vicina": inserisci indirizzo se non conosci il nome
- Export CSV: personalizza colonne prima di esportare per ridurre file size
❓ FAQ & Troubleshooting
Risposte alle domande più frequenti
Cause possibili: vincoli troppo restrittivi, centrali obbligatorie non raggiungibili nel percorso A→B,
toggle "Solo NON ATTIVI" attivo ma nessuna tratta disponibile, centrali isolate nel grafo.
Soluzione: Rimuovi vincoli uno alla volta fino a trovare percorsi, poi re-applica graduali.
Causa: Problemi connessione a server Leaflet/OpenStreetMap o blocco CORS.
Soluzione: Verifica connessione internet, disabilita VPN/Proxy, prova browser diverso (Chrome/Edge), ricarica con Ctrl+F5.
Sì, parzialmente. Funzionano offline: ricerca percorsi, database, calcolo attenuazione, export.
NON funzionano offline: mappe (server OSM), geocoding "Centrale più vicina" (API Nominatim).
Invia richiesta al team Network Planning con: nome centrale, codice GAT, coordinate GPS (lat/lon WGS84), zona/area/regione, motivazione. Tempo elaborazione: 1-2 settimane (aggiornamento mensile DB).
🧾 Changelog – ultime 5 revisioni
Cronologia sintetica degli aggiornamenti (UI/UX + logiche di calcolo). Le voci sono pensate per essere leggibili rapidamente.
V16.0 – Rev11.3 Multi-Arco Calcolo percorsi su tutti gli Archi compatibili + export unificato + mappa dedicata
- Ricerca Percorsi RA: nuovo bottone 🔀 Multi-Arco che calcola il Percorso Std su tutti gli Archi compatibili con la coppia Start/End.
- Tabella Multi-Arco: colonne #, 🔗 Arco, Collegamenti, Distanza (km), Azioni, ID Collegamenti, Percorso Centrali – ordinata automaticamente per distanza crescente.
- Pulsanti azione per riga: ▶ Percorso Div (calcola Div disgiunto per quell'Arco) e 🗺️ Maps (apre mappa OpenStreetMap per la riga).
- Export unificato: 📄 Esporta TXT Multi-Arco genera un file con tutti gli Archi; se presenti
- Ricerca Percorsi RA/RC: la sezione 🗺️ Mappa Topografica dei Percorsi si resetta automaticamente quando passi tra i tab di ricerca (RA ↔ RC), evitando refusi.
- Ricerca Percorsi RA: bottoni 📄 Esporta TXT per Percorsi Std e Percorsi Std + Div allineati per formato alla parte RC (dati RA).
- Versione NODB: aggiunti placeholder
RAW_DB/RAW_DB_RAper evitare errori JS quando i DB non sono ancora iniettati. - Documentazione: voce indice Changelog (senza emoji) e in grassetto.
V11.2 – Fix24 Std/Div naming + Percorso Div disgiunto (RA) + mini-label 1 riga
- Rinomina completa in tutta la UI/Documentazione: Percorsi Std (Standard) e Percorsi Div (Diversificati).
- Ricerca Percorsi RA: il Percorso Div è ora 100% disgiunto dal Percorso Std (nessun IdCollegamento in comune). Se non esiste un Div realmente disgiunto, viene segnalato.
- Mini‑label Arco: resa sempre su una sola riga, centrata sul pannello sinistro, con evidenza “Filtro per Arco”.
V11.2 – Fix20 Reset Tab RA “reale” + ottimizzazione spazi verticali + doc update
- Reset Tab RA: ora richiama i reset “veri” dei filtri (Arco/Tipo Sede) e non lascia filtri attivi “invisibili”.
- Ridotti i gap verticali tra righe chiave (Start2/End2, Must/Avoid, metriche) e leggermente aumentato il gap della barra azioni.
- Documentazione aggiornata (Novità + Changelog).
V11.2 – Fix19 Reset Tab RA/RC + mini-label + gap 0.5rem (prima ottimizzazione)
- Aggiunto bottone 🧼 Reset Tab in RA/RC (reset campi/filtri/risultati senza cancellare Undo).
- Mini-label archi compatibili e prima ottimizzazione spazi verticali.
V11.2 – Fix18 Reset Tab RA/RC + refresh Documentazione/Design System
- Introduzione/Novità e Design System aggiornati.
- Allineamenti UI e piccoli fix stabilità.
V11.2 – Fix17 Colori ID collegamenti (T1/T2 verde, T1/T3 blu) + conteggio ponderato
- Color coding ID collegamenti in RA e calcolo “Collegamenti” ponderato.
V11.2 – Fix16 Ripristino inizializzazione DB/RA (fix errori JS bloccanti)
- Correzioni JS che impedivano la lettura DB nelle celle RA.
V11.2 – Fix17 🟩🟦 ID Collegamenti RA + conteggio ponderato
- Colorazione ID: verde (T1–T2 / T2–T2) e blu TIM (T1–T3 / T2–T3) in grassetto; T3–T3 standard.
- Conteggio “Collegamenti”: verde = 1, blu = 1 ogni 2, altri esclusi.
V11.2 – Fix16 Ripristino init RA + fix JS
- Risolti errori JS che bloccavano l’inizializzazione del modulo RA (autocomplete/DB nelle 6 celle).
- Stabilizzato gestione popup/alert senza interrompere le funzioni di ricerca.
V11.2 – Fix15 Filtri Arco RA (AUTO/MANUALE) + mini-label
- Auto-selezione archi in base alla centrale di partenza; intersezione con centrale di arrivo.
- Quando gli archi compatibili sono multipli, richiesta selezione manuale (mini-label ⚠️ senza alterare layout).
- ID collegamenti per riga per migliore leggibilità.
V11.2 – Fix14 Changelog visibile + anchor corretta
- Corretto posizionamento del blocco Changelog nella colonna Documentazione e fix navigazione indice.
- Ottimizzazioni minori di impaginazione e coerenza UI.
👤 About Me
Giuseppe Lupoli
Info
📊 Schema Coda Cliente & Servizio
Struttura dei costi per tipologia di coda e servizio
📋 Schema Link Rete RA & RC
Listino prezzi collegamenti di rete
🔧 Schema Apparati & Cestelli
Costi apparati di rete e configurazioni cestelli